<?php
/**
 * location actions.
 *
 * @package    costabravasfr
 * @subpackage location
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 12474 2008-10-31 10:41:27Z fabien $
 */
class locationActions extends sfActions
{
	//Itera sobre las imagenes para devolver su numero, dado un nombre
	public function numeroFotos($nom){
	
		$this->logMessage(sfConfig::get('app_fotos_path').$nom, "info");
		if ($gestor = opendir(sfConfig::get('app_fotos_path').$nom)) {
			$a = 0;
			/* Esta es la forma correcto de iterar sobre el directorio. */
			while (false !== ($archivo = readdir($gestor))) {
				if(preg_match('/[0-9].jpg/', $archivo) && strcmp($archivo, 'x')!=0 ){
				//if (strpos($archivo, '.jpg',1) && strcmp($archivo, $nom.'.jpg')!=0 && strcmp($archivo, $nom."thumb.jpg")!=0) {
					$a++;
					//$this->logMessage($archivo, "info");
			  }							      
			}							
			closedir($gestor);
		}
		return $a;	
	}


  public function executeIndex(sfWebRequest $request){
	$query = Doctrine::getTable('ViviendasAlquileres')->createQuery('a');
    $this->viviendas_alquileres_list = $query->execute();
	 
	$this->nbViviendas = $query->count();
  }
  
  public function executeActiveLocations(sfWebRequest $request){
  
	$query = Doctrine::getTable('ViviendasAlquileres')->createQuery('a');
  
    //$this->pager = new sfDoctrinePager('ViviendasAlquileres',10);
	//$this->pager->setQuery($query);
	//$this->pager->setPage($request->getParameter('page', 1));
	//$this->pager->init();
    
	
	$this->viviendas_alquileres_list = $query->execute();
	$this->nbViviendas = $query->count();
  }

  public function executeShow(sfWebRequest $request){
	$this->logMessage("Carpeta fotos: ".sfConfig::get('app_fotos_path'), "info"); 
 	$this->requestForm = new RecepcionEmailsForm();
	
    $this->vivienda = $this->getRoute()->getObject();
	
	
	//La marcamos como visitada
	$this->getUser()->addViviendaToVisited($this->vivienda->id);
	$this->logMessage("Numero de visitadas: ".$this->getUser()->numberVisited(), "info");
	$this->logMessage("Favorites: ".$this->getUser()->getFavoritesString(), "info");
	
	$this->availability = Doctrine::getTable('AlquileresDisponibilidad')->getViviendasWithAvailability($this->vivienda);
	$this->prices = Doctrine::getTable('AlquileresPrecios')->getViviendasWithPrice($this->vivienda);
	$minPricesArr[] = array();
	foreach ($this->prices as $precio){
		$minPricesArr[] = $precio->getPrecio_Euros();
		$this->logMessage("Precio: ".$precio->getPrecio_Euros(), "info");
	}
	$this->logMessage("Precio minimo: ".min($minPricesArr), "info");
	$this->precioMinimo = 0;
	if(count($this->prices) > 0){
		$this->precioMinimo = min($minPricesArr);
	}

	//Extrae todos los .jpg numericos 
	$this->fotoPaths = sfFinder::type('file')->name('[0-9]*.jpg')->
		in(sfConfig::get('app_fotos_path').$this->vivienda->getNombre());
	
	$this-> numFotos = count($this->fotoPaths);
	$this->logMessage("Num fotos ".$this->numFotos, "info");
	
	if($this->numFotos!=0){
		//Recorre los extraidos para crear un array con los nombres ordenados
		foreach ($this->fotoPaths as $file){
			$parts=explode("/",$file);
			$filename=$parts[sizeof($parts)-1];
			$number=explode(".",$filename);
			$arrFiles[$number[0]] = $filename;
			$this->logMessage("arrFiles number ".$filename, "info");
			//Comprobamos si esta en cache este thumb
			$cacheFoto = sfFinder::type('file')->name('*'.$this->vivienda->getNombre().'*-'.$filename)->
				in(sfConfig::get('app_fotos_cache'));
			
			if(count($cacheFoto)==0){
				$this->logMessage('No esta la thumb'.$this->vivienda->getNombre().'*-'.$filename, "info");
				$thumbnail = new sfThumbnail(100, 75);
				$thumbnail->loadFile(sfConfig::get('app_static_domain_fotos').$this->vivienda->getNombre().'/'.$filename);
				// Save the thumbnail
				$thumbnail->save(sfConfig::get('app_fotos_cache').$this->vivienda->getNombre().'100x75-'.$filename);
				//$this->logMessage('cacheFotyo: -'.sfConfig::get('app_abs_path_cache').$filename, "info");
			}
		}
		$arrFiles[] = ksort($arrFiles, SORT_NUMERIC);
		array_pop($arrFiles);
		$this->arrFiles = $arrFiles;
		$this->photoNumber = count($arrFiles);
		
		$this->logMessage("arrFiles number ".$this->photoNumber, "info");
		
		//Si hay fotoComments los obtenemos s�lo de las fotos existentes
		//if($this->vivienda->getFotocomment()=='s'){
		
		$q = Doctrine::getTable('FotosComments')->createQuery('f')
		  ->whereIn('f.numero', $arrFiles)
		  ->andWhere('f.nombre = ? ', array($this->vivienda->getNombre()));
		$this->fotoComments= $q->execute();
		
		//$this->logMessage("Array comments".$this->fotoComments, "info");
		  
			//$this->fotoComments = $q->fetchArray();
			foreach ($this->fotoComments as $comment){
				//$this->logMessage("Commnet: ".$comment->getNumero().'-'.$comment->getNombre().'-'.$comment->getEs_comment(), "info");
			}
		}
		//}
		$this->getResponse()->setTitle($this->viviendaTitle($this->vivienda));
		
		$rutaComment = $this->parseRefererComment($request);
		if($rutaComment!=""){
			$this->getUser()->setFlash('refererComment', $rutaComment);
		}
		
		$this->forward404Unless($this->vivienda);
  }
  
  private function viviendaTitle($vivienda){
	$tipoVivienda = "Appartement";
	if($vivienda->getApart_casa() > 0){$tipoVivienda="Maison ";}
	$title = ucwords($this->vivienda->getSlug())." ".$this->vivienda->getId()." en location, avec ";
	if($vivienda->getPiscina() >0 ){
		$title = $title."piscine et ";
	}
	$title = $title.$vivienda->getHabitaciones()." chambres, ";
	$title = $title."pour ".$vivienda->getCapacidad()." personnes situe a ".$vivienda->getZona().", ".$this->vivienda->getZonasViviendas()->getMunicipio()." | Costa Bravas";
	return $title;
  }
  
 /* private function viviendaPdfTitle($vivienda){
	$tipoVivienda = "Appartement";
	if($vivienda->getApart_casa() > 0){$tipoVivienda="Maison ";}
	$title = ucwords($this->vivienda->getSlug())." en location, avec ";
	if($vivienda->getPiscina() >0 ){
		$title = $title."piscine et ";
	}
	$title = $title.$vivienda->getHabitaciones()." chambres, ";
	$title = $title."pour ".$vivienda->getCapacidad()." personnes situé à ".$vivienda->getZona().", ".$this->vivienda->getZonasViviendas()->getMunicipio().".";
	return $title;
  }*/
  
  private function parseRefererComment($request){
	$referer = $request->getReferer();
	$environment = sfConfig::get("sf_environment");
	$parseurl = parse_url($referer);
	$script = ($environment == "prod") ? $parseurl["host"] : "frontend_dev.php";
	$referer = substr($referer, strpos($referer, $script) + strlen($script));
	$referer = str_replace("/".$script, "", $referer);
	$ruta = $this->getContext()->getRouting()->findRoute($referer);
	
	$this->logMessage($ruta['name']);
	//$params = sfContext::getInstance()->getRouting()->parse($referer);
	//$this->logMessage("Ruta del referer".$params['action']." ".$params['module'], "info");
	//return $params;
	if(isset($ruta['parameters']['comment'])){
		$this->logMessage("Ruta parseReferer".$ruta['parameters']['comment'], "info");
		return $ruta['parameters']['comment'];
	}
	else return "";
	
  }
  
      
  public function executePDF(){
	$config = sfTCPDFPluginConfigHandler::loadConfig();
 
	// pdf object
	$pdf = new sfTCPDF();

	// settings
	$pdf->SetFont("FreeSerif", "", 12);
	$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
	$pdf->setHeaderFont(array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
	$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE, PDF_HEADER_STRING);
	$pdf->setFooterFont(array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
	$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
	$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);

	$this->vivienda = $this->getRoute()->getObject();
	
	$pdf->SetTitle(ucwords($this->vivienda->getSlug()." ".$this->vivienda->getId()));
	$pdf->SetAuthor("Costa Brava's");
	$pdf->SetCreator("Costa Brava's");
	$pdf->SetKeywords("Costa Brava Villas location appartements");
	$pdf->SetSubject("Vacances");
	
	// init pdf doc
	$pdf->AliasNbPages();
	$pdf->AddPage();
	$pdf->SetFont('FreeSerif','C',10);
	$pdf->Cell(15,-15, $this->vivienda->getCapacidad()." personnes - ".$this->vivienda->getHabitaciones()." chambres", 0,0,'L');
	$pdf->Cell(160,-15, $this->vivienda->getZona().", ".$this->vivienda->getZonasViviendas()->getMunicipio(), 0,0,'R');
	$pdf->Ln(5);
	if ($this->vivienda->getPiscina() > 0){
		$pdf->Cell(15,-10, $this->tipoPiscinaArg($this->vivienda->getPiscina()), 0,0,'L');
	}
	$pdf->Ln();
	
	$pdf->SetFont('FreeSerif','C',17);
	$pdf->Cell(170,10, strtoupper($this->vivienda->getSlug()." ".$this->vivienda->getId()), 0,0,'C');

	$pdf->setImageScale(1.6);
	//$imageThumb1 = $pdf->Image('D:\symfonyprojects\costabravas2\web\fotos\thumb1.jpg',15);
	//$imageThumb2 = $pdf->Image('D:\symfonyprojects\costabravas2\web\fotos\thumb1.jpg',170);
	$imageThumb1 = $pdf->Image("http://www.costabravas.fr/cache/".$this->vivienda->getNombre()."100x75-3.jpg",16);
	$imageThumb2 = $pdf->Image("http://www.costabravas.fr/cache/".$this->vivienda->getNombre()."100x75-4.jpg",170);
	$pdf->Ln(15);
	
	$pdf->SetFont('FreeSerif','I',12);
	//$pdf->SetFillColor(0, 240, 255, true);
	

	$pdf->Write($h=0, "S'il vous plaît, consultez la disponibilité et prix actualisés sur ", $link='', $fill=0, $align='C', $ln=true, $stretch=0, $firstline=false, $firstblock=false, $maxh=0);
	$pdf->SetTextColor(101, 148, 74);
$pdf->Write($h=0, "http://www.costabravas.fr/location/".$this->vivienda->getSlug()."-".$this->vivienda->getNombre(), $link='http://www.costabravas.fr/location/'.$this->vivienda->getSlug()."-".$this->vivienda->getNombre(), $fill=0, $align='C', $ln=true, $stretch=0, $firstline=false, $firstblock=false, $maxh=0);
	
	$pdf->Ln(5);
	$pdf->SetLineWidth(1);
	$pdf->SetTextColor(0,0,0);
	$pdf->SetFont('FreeSerif','I',12);
	//$pdf->SetFillColor(0, 240, 255, true);
	
	$pdf->SetFont('FreeSerif','I','J',14);
	$pdf->Write($h=0, $this->vivienda->getDesc_brev_fr(), $link='', $fill=0, $align='L', $ln=true, $stretch=0, $firstline=false, $firstblock=false, $maxh=0);
	$pdf->Ln(5);
	$pdf->SetFont('FreeSerif','J',12);
	$pdf->Write($h=0, $this->vivienda->getDesc_pre_fr(), $link='', $fill=0, $align='L', $ln=true, $stretch=0, $firstline=false, $firstblock=false, $maxh=0);
	$pdf->Ln(5);
	$pdf->setImageScale(1.6);
	//$image1 = $pdf->Image("/home/gafilter/www/begurholidays/fotos/".$this->vivienda->getNombre()."/1.jpg",15);
	//$image2 = $pdf->Image("/home/gafilter/www/begurholidays/fotos/".$this->vivienda->getNombre()."/2.jpg",110);
	//$image1 = $pdf->Image('D:\symfonyprojects\costabravas2\web\fotos\annsoso\1.jpg',15);
	//$image2 = $pdf->Image('D:\symfonyprojects\costabravas2\web\fotos\annsoso\2.jpg',120);
	
	//$pdf->MultiCell(60, 60, $image1, 0, 'L', 0, 0, '', '', false);
	//$pdf->MultiCell(60, 60, $image2, 0, 'R', 0, 0, '', '', false);
        $image1 = $pdf->Image(sfConfig::get('app_fotos_path').$this->vivienda->getNombre()."/1.jpg",15);
        $image2 = $pdf->Image(sfConfig::get('app_fotos_path').$this->vivienda->getNombre()."/2.jpg",107);
	
	$pdf->Ln(75);

$pdf->Write($h=0, $this->vivienda->getDesc_fr(), $link='', $fill=0, $align='L', $ln=true, $stretch=0, $firstline=false, $firstblock=false, $maxh=0);
$pdf->Write($h=0, "Jour d'arrivée: ".$this->vivienda->getDiaSemanaCambio(), $link='', $fill=0, $align='R', $ln=true, $stretch=0, $firstline=false, $firstblock=false, $maxh=0);

$pdf->Ln(75);
$pdf->AddPage();
$pdf->Write($h=0, "Où se trouve ".ucwords($this->vivienda->getSlug())." ".$this->vivienda->getId()."?", $link='', $fill=0, $align='L', $ln=true, $stretch=0, $firstline=false, $firstblock=false, $maxh=0);
$pdf->Ln(5);
$imagGMaps = $pdf->Image('http://maps.google.com/staticmap?center='.$this->vivienda->getGeoLatitud().','.$this->vivienda->getGeoLongitud().'&markers='.$this->vivienda->getGeoLatitud().','.$this->vivienda->getGeoLongitud().',green&zoom=13&size=800x400&key='.sfConfig::get("app_googlemaps_key").'&sensor=true_or_false');
$pdf->Ln(100);	
if($this->vivienda->getZonasViviendas()->getZonaDescFr()){	
	$pdf->Write($h=0, ucwords($this->vivienda->getSlug())." ".$this->vivienda->getId()." se trouve à ".$this->vivienda->getZonasViviendas()->getZona().". ".$this->vivienda->getZonasViviendas()->getZonaDescFr().".", $link='', $fill=0, $align='L', $ln=true, $stretch=0, $firstline=false, $firstblock=false, $maxh=0);
$pdf->Ln();	
}

$pdf->Write($h=0, "Information imprimé le ". date('d/m/Y'), $link='', $fill=0, $align='R', $ln=true, $stretch=0, $firstline=false, $firstblock=false, $maxh=0);	

	// output
	$pdf->Output();

	// Stop symfony process
	throw new sfStopException();

	}
	
	
 public function tipoPiscinaArg($tipoPiscina){
		switch ($tipoPiscina) {
			case 1:
				return "Piscine comm.";
				break;
			case 2:
				return "Piscine privée";
				break;
		}
    }
}